package beans;

import java.sql.Date;
import java.util.ArrayList;

/**
 * Beans Projet permettant la sauvgarde d'un projet dans la base de données
 * @author Amanda & Rami
 */
public class Projet {

    private int idProjet;
    private String nom;
    private Date dateDebut;
    private Date dateFin;
    private String descriptif;
    private int idSession;
    private ArrayList<Equipe> equipes;
    private ArrayList<Formateur> formateurs;
    private ArrayList<Module> modules;

    /**
     * Constructeur par défaut
     */
    public Projet() {
        this.idProjet = 0;
        this.nom = null;
        this.dateDebut = null;
        this.dateFin = null;
        this.equipes = null;
        this.descriptif = null;
        this.idSession = 0;
        this.formateurs = null;
        this.modules = null;
    }

    /**
     * Constructeur prenant en paramètre l'identifiant, le nom, la date de début et de fin, le descriptif, la promotion du projet
     * @param idProjet Identifiant du projet
     * @param nom Nom du projet
     * @param ddebut Date de début du projet
     * @param dfin Date de fin du projet
     * @param descriptif Description du projet
     * @param promotion Promotion du projet
     */
    public Projet(int idProjet, String nom, Date ddebut, Date dfin, String descriptif, int promotion) {
        this.idProjet = idProjet;
        this.nom = nom;
        this.dateDebut = ddebut;
        this.dateFin = dfin;
        this.descriptif = descriptif;
        this.idSession = promotion;
        this.equipes = null;
        this.formateurs = null;
        this.modules = null;
    }

    /**
     * Constructeur prenant en paramètre le nom, la date de début et de fin, le descriptif, la liste des équipes, formateurs et modules du projet
     * @param nom Nom du projet
     * @param ddebut Date de début du projet
     * @param dfin Date de fin du projet
     * @param descriptif Description du projet
     * @param equipes Liste des équipes du projet
     * @param formateurs Liste des intervenants du projet
     * @param modules Liste des modules du projet
     */
    public Projet(String nom, Date ddebut, Date dfin, String descriptif, ArrayList<Equipe> equipes, ArrayList<Formateur> formateurs, ArrayList<Module> modules) {
        this.nom = nom;
        this.dateDebut = ddebut;
        this.dateFin = dfin;
        this.descriptif = descriptif;
        this.equipes = equipes;
        this.formateurs = formateurs;
        this.modules = modules;
    }

    /**
     * Getter / Setter
     * @return idSession
     */
    public int getPromotion() {
        return idSession;
    }

    /**
     * Getter / Setter
     * @param idSession (int) idSession
     */
    public void setPromotion(int promotion) {
        this.idSession = promotion;
    }

    /**
     * Getter / Setter
     * @return descriptif
     */
    public String getDescriptif() {
        return descriptif;
    }

    /**
     * Getter / Setter
     * @param descriptif Description du projet
     */
    public void setDescriptif(String descriptif) {
        this.descriptif = descriptif;
    }

    /**
     * Getter / Setter
     * @return dateDebut
     */
    public Date getDateDebut() {
        return dateDebut;
    }

    /**
     * Getter / Setter
     * @param dateDebut Date de début
     */
    public void setDateDebut(Date dateDebut) {
        this.dateDebut = dateDebut;
    }

    /**
     * Getter / Setter
     * @return dateFin
     */
    public Date getDateFin() {
        return dateFin;
    }

    /**
     * Getter / Setter
     * @param dateFin Date de fin
     */
    public void setDateFin(Date dateFin) {
        this.dateFin = dateFin;
    }

    /**
     * Getter / Setter
     * @return equipes
     */
    public ArrayList<Equipe> getEquipes() {
        return equipes;
    }

    /**
     * Getter / Setter
     * @param equipes Liste d'équipes
     */
    public void setEquipes(ArrayList<Equipe> equipes) {
        this.equipes = equipes;
    }

    /**
     * Getter / Setter
     * @return formateurs
     */
    public ArrayList<Formateur> getFormateurs() {
        return formateurs;
    }

    /**
     * Getter / Setter
     * @param formateurs Liste de formateurs
     */
    public void setFormateurs(ArrayList<Formateur> formateurs) {
        this.formateurs = formateurs;
    }

    /**
     * Getter / Setter
     * @return idProjet
     */
    public int getIdProjet() {
        return idProjet;
    }

    /**
     * Getter / Setter
     * @return modules
     */
    public ArrayList<Module> getModules() {
        return modules;
    }

    /**
     * Getter / Setter
     * @param modules Liste des modules
     */
    public void setModules(ArrayList<Module> modules) {
        this.modules = modules;
    }

    /**
     * Getter / Setter
     * @return nom
     */
    public String getNom() {
        return nom;
    }

    /**
     * Getter / Setter
     * @param nom Nom du projet
     */
    public void setNom(String nom) {
        this.nom = nom;
    }

    /**
     * Getter / Setter
     * @param idProjet Identifiant du projet
     */
    public void setIdProjet(int idProjet) {
        this.idProjet = idProjet;
    }
}
